import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import postCssPxToRem from "postcss-pxtorem";
import Components from 'unplugin-vue-components/vite';
import { VantResolver } from 'unplugin-vue-components/resolvers';
import { resolve } from "path";
const pathResolve = (dir) => resolve(__dirname, dir);
// import {
//   createStyleImportPlugin,
//   VantResolve
// } from 'vite-plugin-style-import'; //按需引入插件

// https://vitejs.dev/config/
export default defineConfig({
  // publicDir:'./',
  base: './',
  plugins: [
    vue(),
    Components({
      resolvers: [VantResolver()],
    })
    // createStyleImportPlugin({
    //   resolves: [VantResolve()], //引入vant
    //   libs: [{
    //     libraryName: "vant",
    //     esModule: true,
    //     resolveStyle: (name) => {
    //       name = name == 'show-toast' ? 'toast' : name
    //       return `../es/${name}/style/index`; //修改vant引入路径
    //     },
    //   }],
    // }),
  ],
  resolve: {
    alias: {
      "@": pathResolve("./src"), // 新增
    },
  },
  css: {
    postcss: {
      plugins: [
        postCssPxToRem({
          rootValue({ file }) {
            return file.indexOf('vant') !== -1 ? 37.5 : 75
          },
          // rootValue: 37.5, // 1rem，根据 设计稿宽度/10 进行设置
          propList: ['*'], // 需要转换的属性，这里选择全部都进行转换
        })
      ]
    },
    preprocessorOptions: {
      less: {
        javascriptEnabled: true,
        additionalData: `@import "@/css/func.less";`,
      },
    },
  },
  //打包配置
  build: {
    //浏览器兼容性  "esnext"|"modules"
    target: "modules",
    //指定输出路径
    outDir: "h5",//activity
    //生成静态资源的存放路径
    assetsDir: "assets",
    // rollupOptions: {
    //   output: {
    //     chunkFileNames: 'assets/js/[name]-[hash].js',
    //     entryFileNames: 'assets/js/[name]-[hash].js',
    //     assetFileNames: 'assets/[ext]/[name]-[hash].[ext]',
    //   },
    // },
    //小于此阈值的导入或引用资源将内联为 base64 编码，以避免额外的 http 请求。设置为 0 可以完全禁用此项
    assetsInlineLimit: 4096,
    //启用/禁用 CSS 代码拆分
    cssCodeSplit: true,
    //构建后是否生成 source map 文件
    sourcemap: false,
    //自定义底层的 Rollup 打包配置
    // rollupOptions: {
    // },
    // //@rollup/plugin-commonjs 插件的选项
    // commonjsOptions: {
    // },
    // //构建的库
    // lib: {
    // },
    //当设置为 true，构建后将会生成 manifest.json 文件
    manifest: false,
    // 设置为 false 可以禁用最小化混淆，
    // 或是用来指定使用哪种混淆器
    // boolean | 'terser' | 'esbuild'
    minify: "terser", //terser 构建后文件体积更小
    //传递给 Terser 的更多 minify 选项。
    // terserOptions: {
    // },
    //设置为 false 来禁用将构建后的文件写入磁盘
    write: true,
    //默认情况下，若 outDir 在 root 目录下，则 Vite 会在构建时清空该目录。
    emptyOutDir: true,
    //启用/禁用 brotli 压缩大小报告
    brotliSize: true,
    //chunk 大小警告的限制
    chunkSizeWarningLimit: 500
  },
  server: {
    host: '0.0.0.0',
    port: 4000, // 设置服务启动端口号
    open: false, // 设置服务启动时是否自动打开浏览器
    cors: true, // 允许跨域
    // 设置代理，根据我们项目实际情况配置
    proxy: {
      '/app': { //act是自行设置的请求前缀，按照这个来匹配请求，有这个字段的请求，就会进到代理来
        target: 'http://192.168.0.16:10026/',
        changeOrigin: true, //是否跨域
        rewrite: (path) => path.replace(/^\/app/, '') //重写匹配的字段，如果不需要放在请求路径上，可以重写为""
      }
    }
  }
})

